#!/bin/bash

# GoX 项目构建脚本

set -e

echo "🚀 开始构建 GoX 项目..."

# 1. 清理之前生成的文件
echo "🧹 清理旧的生成文件..."
find . -name "*.go" ! -name "*.gox.go" ! -name "extension.js" -delete 2>/dev/null || true

# 2. 编译所有 .gox 文件
echo "🔨 编译 GoX 源文件..."
for gox_file in *.gox; do
    if [ -f "$gox_file" ]; then
        output_file="${gox_file%.gox}.go"
        echo "  处理: $gox_file -> $output_file"
        
        # 检查 goxc 编译器是否存在
        if command -v goxc >/dev/null 2>&1; then
            goxc -i "$gox_file" -o "$output_file"
        elif [ -f "../gox-lsp.exe" ]; then
            ../gox-lsp.exe -compile -i "$gox_file" -o "$output_file"
        else
            echo "⚠️  GoX 编译器未找到，使用模拟编译..."
            # 模拟编译：移除构建标签，生成有效的Go文件
            sed '/^\/\/go:build ignore/d; /^\/\/ +build ignore/d; /^\/\/go:generate/d' "$gox_file" > "$output_file"
        fi
        
        echo "  ✅ 生成: $output_file"
    fi
done

# 3. 运行 go generate（如果需要）
if [ "$1" = "--generate" ]; then
    echo "🔄 运行 go generate..."
    go generate ./...
fi

# 4. 构建 Go 项目
if [ "$1" = "--build" ] || [ "$2" = "--build" ]; then
    echo "🔨 构建 Go 项目..."
    go build -v ./...
    echo "✅ 构建完成！"
fi

# 5. 运行测试
if [ "$1" = "--test" ] || [ "$2" = "--test" ]; then
    echo "🧪 运行测试..."
    go test ./...
fi

echo "🎉 GoX 项目构建完成！" 